Better event handling
 When an upkey, downkey, etc. is detected it should be passed
 to the menu class.  The menu object should handle the event
 and do whatever is necessary (highlighting, etc.)
 
*Bounding box for the button class?
 SILBtn.Rect -> pygame.Rect
 
Add selected function to button class?
 Instead of hardcoding what should happen when a particular
 button is selected, the button itself should have a function
 for this.  IE def selected(self): then whatever you want to do
 in that function.  So when the enter key is hit, or mousebutton
 clicked, just would have to call the selected function for the
 particular button?

Eventually there will be the SILScreen class controlling which screen is displayed and all that good junk.  What im thinking is, there will only be ONE function that handles events.  When a user presses up or down for instance a function in the the SILScreen class will be called.  The SILScreen class for instance will have variable that will hold the current menu object.  The function would call the appropriate function in the menu class sort of like:  SILScreen.Menu.KeyPress(Up)  or something...so no matter what screen is displayed, or what menu is there, you only need one piece of code to handle it.  So you would have one function like DoEvents or something that would loop through seeing if a key was pressed, or if the mouse was moved.  If the mouse was moved it would have to again be passed to the SILScreen object, which would pass it on to the Menu object, which would somehow check if hte mouse was over a button (could use the bounding boxes here..or just the hardcoded ones) and act appropriately.  Also there would be a function Render() that would handle all the screen updating.  Like, after you are done setting up a surface, call render to Blit it or SOMETHING to that extent...that way there arent hundreds of functions each blitting the screen, and also can use that to check FPS, and other necessary things like call the DoEvents function, and what not.

~ comment code
~ button PULSING
~ *** start play-field screen ***
~ *** revamp lobby chat       ***
~ *** OPTIMIZE ! ! !          ***

Changelog:
Frame render speed now controlled by pygame.time.Clock()
SILBtn is derived from pygame.sprite.Sprite
SILMnu is derived from pygame.sprite.AbstractGroup
